package net.chasing.androidbaseconfig.widget.rich.base;

import android.content.Context;
import android.text.SpannableString;

import java.util.List;

/**
 * 富文本转换解析接口
 */
interface IRichParser {
    /**
     * 获取RichItem的id
     *
     * @param labelText 单个RichItem对应的整个文本串
     * @return id
     */
    int getId(String labelText);

    /**
     * 设置待判断的字符串
     */
    void resetTargetStr(String text);

    /**
     * 判断字符串中是否包含话题
     */
    boolean containsRichItem();

    /**
     * 将服务器返回的格式字符串转换成相应的富文本
     */
    String parserLabelTextToRich(String text);

    /**
     * 将信息转换成相应富文本信息
     */
    String getRichText(String str);

    /**
     * 将单个富文本格式的信息转换回普通信息
     */
    String revertRichItem(String str);

    /**
     * 获取全部的相关富文本
     * 区别与getAllRichItem：
     * 每个RichItem的startPosition和endPosition都是以自身富文本长度进行计算
     */
    List<RichItem> getAllRichItem();

    /**
     * 将普通文本转换为富文本
     */
    SpannableString getRichSpannable(Context context);

    /**
     * 获取字符串中的第一个话题,匹配到的结果已经是格式化之后的了,不需要对匹配结果再次格式化
     */
    String getFirstRichItemText();

    RichItem getFirstRichItem();

    RichItem getSimpleFirstRichItem();

    /**
     * 获取字符串中的第一个话题在字符串中的索引
     */
    int getFirstRichIndex();

    /**
     * 获取字符串中的最后一个话题,匹配到的结果已经是格式化之后的了,不需要对匹配结果再次格式化
     */
    String getLastRichItemText();

    RichItem getLastRichItem();

    RichItem getSimpleLastRichItem();

    /**
     * 获取字符串中的最后一个话题在字符串中的索引
     */
    int getLastRichIndex();
}
